'use strict';

const rule = {
    username: [
        { required: true, message: '用户名不能为空' },
        { type: 'string', message: '密码字段需要是字符串' },
        {
            //不能有非法字符 空格等
            validator(rule, value, callback, source, options) {
                const reg = /[\s]/; //空格
                if (!reg.test(value)) {
                    callback(); // 验证通过
                    return;
                }
                callback({ message: '存在非法字符' }); // 验证不通过
            },
        },
    ],
    email: [
        { required: true, message: '邮箱不能为空' },
        { type: 'email', message: '邮箱格式不正确' },
    ],
    password: [
        { required: true, message: '密码不能为空' },
        { type: 'string', message: '密码字段需要是字符串' },
        {

            validator(rule, value, callback, source, options) {
                //非法字符验证
                const reg2 = /[\s]/; //空格
                if (!reg2.test(value)) {
                    //密码位数和字符类型规范
                    const reg1 = /^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)[^]{8,16}$/;
                    if (reg1.test(value)) {
                        callback(); // 验证通过
                        return;
                    }
                    callback({ message: '密码最少包含一个大小写字母、数字并且为8-16位' }); // 验证不通过

                }
                callback({ message: '存在非法字符' })
            },
        },
    ],
};


module.exports = rule;